-----------------------------------------------------------------------------
--
-- Module      :  Data.TypeLevel.Families
-- Copyright   :
-- License     :  AllRightsReserved
--
-- Maintainer  :  eduard.sergeev@gmail.com
-- Stability   :  Highly Experimental
-- Portability :
--
-- Type families (here as type-level typeclasses)
--
-----------------------------------------------------------------------------

{-# LANGUAGE NoImplicitPrelude, TypeFamilies, TypeOperators #-}

module Data.TypeLevel.Families (

   (:==:),
   (:/=:),

   LT,EQ,GT,
   Compare,
   (:<=:),
   (:>=:),
   (:<:),
   (:>:),

   (:+:),
   (:-:),
   (:*:),
  
) where


-- * Type-level Eq
type family l :==: b :: *
type family l :/=: b :: *

-- * Type-level Ord
data LT
data EQ
data GT

type family Compare l r :: *
type family l :<=: r :: *
type family l :>=: r :: *
type family l :<: r :: *
type family l :>: r :: *

-- * Type-level "Num"
type family l :+: r :: *
type family l :-: r :: *
type family l :*: r :: *
